上传图片返回空文件

时间:2014-09-25 08:32:13

标签: c# android asp.net

我在上传图片文件时遇到问题,从Android到asp net c#中的远程webservice。

问题是从Android发送到远程服务器的图像文件是零千字节;上传工作,上传的图像文件名在远程服务器的正确文件夹中是正确的,我在调试Android和调试asp网络时没有错误,但是这个图像是空的。

非常感谢你的帮助。

提前致谢

java类中的android代码:

    File mFile = new  File("/storage/emulated/0/image_file.jpg");
    if(mFile.exists()){
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        Bitmap bmp = BitmapFactory.decodeFile(mFile.getAbsolutePath());
        bmp.recycle();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        Request.addProperty("byteArray", byteArray);
    }

asp.net中的WebService c#

[WebMethod]
public string sendUpload(Byte[] byteArray, string fileName)
{
    string Path;
    Path = "D:\\Inetpub\\wwwroot\\myAppAndroid\\uploads\\" + fileName;
    FileStream objfilestream = new FileStream(Path, FileMode.Create, 
                                              FileAccess.ReadWrite);
    objfilestream.Close();    

    return byteArray + "; " + fileName.ToString();
}

首先编辑问题,我在这行中有错误

file.Write(byteArray, 0, byteArray.Length);

[WebMethod]
public string sendUpload(Byte[] byteArray, string fileName)
{
    string strdocPath;
    strdocPath = "D:\\Inetpub\\wwwroot\\myAppAndroid\\uploads\\" + fileName;

    System.IO.FileStream file = System.IO.File.Create(HttpContext.Current.Server.MapPath(".\\myAppAndroid\\uploads\\" + fileName));

    file.Write(byteArray, 0, byteArray.Length);
    file.Close();   

    return byteArray + "; " + fileName.ToString();
}

1 个答案:

答案 0 :(得分:0)

你应该在文件系统上写下收到文件的内容:

    [WebMethod]
    public string sendUpload(Byte[] byteArray, string fileName)
    {
        string Path;
        Path = "D:\\Inetpub\\wwwroot\\myAppAndroid\\uploads\\" + fileName;
        FileStream objfilestream = new FileStream(Path, FileMode.Create, 
                                                  FileAccess.ReadWrite);
// here some code is missing
        objfilestream.Close();    

        return byteArray + "; " + fileName.ToString();
    }

您输入的Byte[]是您从未在服务器磁盘上写的。