android 开发上传图片遇到返回 FileNotFoundException

目的:带有参数上传图片

环境:客户端开发 android studio  ,服务器端:visual studio 2012 (c# asp.net)

************************************************************************

上传图片的时候遇到返回FileNotFoundException,但是一直在客户端报错

HttpURLConnection中connection.getInputStream()报错误FileNotFoundException

java.io.FileNotFoundException: http://192.168.11.6/appHandler/UploadHandler.ashx  (一直以为是找不到这个文件)

所以也一直在查找客户端的错误,换来换去,还是没有解决,都快疯掉了,放了一段时间,今天又重新来补充这一块的开发,慢慢调试,才发现如果在服务器端只接受参数,不处理图片与文件这一块,则会正常返回服务器消息,这才知道是服务器端出现问题了,下面把出问题的代码贴出来:

public string UploadVoiceFile(HttpContext context)
    {
        string FileName, FilePath;
        HttpPostedFile ItemImageFile = context.Request.Files["Filedata"];
        FileName = ItemImageFile.FileName.Substring(ItemImageFile.FileName.LastIndexOf("."));
        //FileName = Guid.NewGuid().ToString().Substring(24) + DateTime.Now.ToShortDateString().Replace("/", "_") + file.FileName.Substring(file.FileName.LastIndexOf("."));
        string FilePathStr = "/upload/voice/" + DateTime.Now.ToShortDateString().Replace("/", "") + "/";
        FilePath = HttpContext.Current.Server.MapPath(@FilePathStr);
        if (ItemImageFile != null)
        {
            //如果没有该目录则创建该上传目录
            if (!Directory.Exists(FilePath))  //这一块就出现问题
            {
                Directory.CreateDirectory(FilePath);
            }
            if (ItemImageFile.ContentLength > 2097152)  // 图片大小不能超过2M
            {
                return "{"result": "-1","msg":"图片大小不能超过2M!"}";
            }
            ItemImageFile.SaveAs(FilePath + FileName);
            return "{"result": "1","msg":"" + FilePathStr + FileName + ""}";
        }
        return "{"result": "-1","msg":"文件数据为空!"}";
    }


是创建不了目录,也不能正常保存文件,所以抛出FileNotFoundException,也就传回到客户端了,以为是找不到文件:http://192.168.11.6/appHandler/UploadHandler.ashx

网上也有朋友遇到过,说是重新建了一个工程就OK了,我这里通过服务器本地调试也是可以的,所以原因出现在 IIS文件权限这一块

找到要上传的文件目录,右键->安全 -》 添加 -> Everyone 用户,权限:完全控制  ,搞定!

汗颜啊,这一个小小的问题浪费了几天的开发时间,写在这里留作以后笔记,也供大家参考!

原文地址:https://www.cnblogs.com/feijian/p/4113112.html