Azure 存储 Blob:上传的 CSV 文件显示零字节

我已经完成了容器设置和文件重命名步骤,这不是问题,但上传后,我 Azure 域上 blob 存储容器中的文件大小显示为 0 字节。

我尝试交替将文件转换为 FileInputStream 并将其作为流上传,但它仍然以相同的方式产生。

fileName=event.getFilename(); //fileName is e.g eod1234.csv

String tempdir = System.getProperty("java.io.tmpdir");

file= new File(tempdir+File.separator+fileName); //

try {

    PipedOutputStream pos = new PipedOutputStream();

    stream= new PipedInputStream(pos);

    buffer = new byte[stream.available()];

    stream.read(buffer);

    FileInputStream fils = new FileInputStream(file);

    int content = 0;

    while((content = fils.read()) != -1){

        System.out.println((char)content);

    }

    //Outputstream was written as a test previously but didn't work

    OutputStream outStream = new FileOutputStream(file);

    outStream.write(buffer);

    outStream.close();


    // container name is "testing1"            

    CloudBlockBlob blob = container.getBlockBlobReference(fileName);

    if(fileName.length() > 0){

       blob.upload(fils,file.length()); //this is testing with fileInputStream

       blob.uploadFromFile(fileName); //preferred, just upload from file

    }

}            

没有显示任何错误消息,只是我们知道该文件涉及 blob 存储并显示大小为 0 字节。这是一种单向过程,仅上传 CSV 格式的文件。在 blob 容器中,它应该显示每个上传的文件大小为 1-5 KB。


月关宝盒
浏览 136回答 3
3回答

SMILET

而不是blob.uploadFromFile(fileName);你应该使用blob.uploadFromFile(file.getAbsolutePath());因为uploadFromFile方法需要绝对路径。而且你不需要blob.upload(fils,file.length());.

HUH函数

我在处理(从多部分文件复制的)文件时遇到了同样的问题,.png我正在这样做:File file = new File(multipartFile.getOriginalFilename());Azure 上的 blob 是 0bytes 但是当我改成这个时:File file = new File("C://uploads//"+multipartFile.getOriginalFilename());它开始正确保存文件

慕尼黑的夜晚无繁华

CloudBlockBlob 或 BlobContainerUrl 方法都有效。开箱即用的上传组件需要手动将 FileOutputStream 实现为一个临时对象,这与随处可见的普通 servlet 对象不同。由于时间有限,我使用了他们的一个插件 EasyUpload,因为它集成了 Viritin UploadFileHandler 而不是弄清楚如何从头开始流式传输对象。如果有更多时间,我肯定会在我的沙盒工作区中试用 MultiFileUpload 插件,它有更多有趣的东西。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java