C# 用UploadFile上传文件,保存到服务器中,但是在测试区正常,在正式去报错
    测试区的web.config没有配置requestLengthDiskThreshold,正式区好像也没有,但是在
    正式区上传附件报“Cannot access a closed file”,请问怎么解决?





    if (fupFile.PostedFile != null && fupFile.PostedFile.ContentLength > 0)
    {
        if (fupFile.HasFile)
        {

            ListItem item = new ListItem();
            item.Value = item.Text = fupFile.PostedFile.FileName;
            if (!lbxFile.Items.Contains(item))
            {
                lbxFile.Items.Add(item);
                files.Add(fupFile);
            }

        }
        if (files.Count > 0)
        {
            string WF_NO;
            string WF_Sale;
            string filename = "";
            string path = "d:\\Lorom\\ProductCenter\\WorkFlow\\FTPFile\\" + Session["wf_sale"].ToString() + "\\" + Session["WF_NO"].ToString() + "\\";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            lblShow.Text = fupFile.PostedFile.FileName;

            WF_Sale = Session["UserNO"].ToString();
            WF_NO = Session["WF_NO"].ToString();


            WCFHelperBase wcfBase = new WCFHelperBase();
            foreach (FileUpload fup in files)
            {
                if (fup.HasFile)

                    filename = fup.FileName;
                //string extend = Path.GetExtension(filename);

                // fupFile.PostedFile.SaveAs(Server.MapPath(path)+"\\"+filename);
                // Directory.CreateDirectory(path);
                //myFile.SaveAs(path + fupFile);
                wcfBase.csHelper.GetUnsignFile(WF_NO, filename, WF_Sale);
                fup.SaveAs(path + "/" + fup.FileName);//无法访问已关闭的文件

            }
            //Page.ClientScript.RegisterClientScriptBlock(typeof(string), "", @"<script>alert('上传成功!')</script>");
            wcfBase.CloseWCF();
            Response.AddHeader("Refresh", "0");
        }
    }

4个回答

 <System.Web>
   <httpRuntime executionTimeout="90" maxRequestLength="20000" useFullyQualifiedRedirectUrl="false" requestLengthDiskThreshold="8192"/>
</System.Web>

先刷新,再关闭,顺序别错。

writer.Flush();
fileStream.Flush();

writer.Close();
fileStream.Close();

判断下是不是 输出流没关闭。

很久没有写文件操作的方法了,记得之前写过一个类库是关于文件操作的,今天翻出来一看居然没有文件写入操作,于是临时加了一个(期间还询问了一下度娘,年纪大了,脑子不好使了)。

写完后发现报一个错误:cannot access a closed file,神马情况?第一反应是文件关闭了,没有读取到,但是印象中filestream不用显式打开的啊,后来懒得想了,debug一下最快捷了

于是,问题总算发现了,代码如下:

///
/// 向文件中写入信息(文件不存在会创建文件)
///
/// 文件内容
/// 写入的字节数
public static int WriteFile(string filePath,string fileContent)
{
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(fileStream);

writer.WriteLine(fileContent);
writer.Flush();

        writer.Close();
        fileStream.Flush();
        fileStream.Close();
        return fileContent.Length;
    }

关闭对象的顺序不对

writer.close()执行后

fileStream.Flush()再执行,这个时候文件应该关闭了,怎么可能写入呢?于是调整代码顺序,问题解决;

///
/// 向文件中写入信息(文件不存在会创建文件)
///
/// 文件内容
/// 写入的字节数
public static int WriteFile(string filePath,string fileContent)
{
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate);
StreamWriter writer = new StreamWriter(fileStream);
writer.WriteLine(fileContent);
writer.Flush();
fileStream.Flush();
writer.Close();
fileStream.Close();
return fileContent.Length;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c# webserver上传文件到服务器的问题
c# webserver上传文件到服务器的问题 遇到100多M的文件直接报 操作超时 我在web.config文件里面也已经配置了 ``` <system.web> <httpRuntime maxRequestLength="5120000" executionTimeout ="360000"/> ``` 但是没有用 下面是代码 webserver ``` //上传文件至服务器 [WebMethod] public bool UploadFile(byte[] fs, string path, string fileName) { bool flag = false; try { //获取上传案例图片路径 path = Server.MapPath(path); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //定义并实例化一个内存流,以存放提交上来的字节数组。 MemoryStream m = new MemoryStream(fs); //定义实际文件对象,保存上载的文件。 FileStream f = new FileStream(path + "\\" + fileName, FileMode.Create); //把内内存里的数据写入物理文件 m.WriteTo(f); m.Close(); f.Close(); f = null; m = null; flag = true; } catch (Exception ex) { flag = false; } return flag; } ``` c/s界面代码 ``` string path = txtUrl.Text.Trim(); ;//本地路径 byte[] bytes = GetBytesByPath(path);//获取文件byte[] public static byte[] GetBytesByPath(string path) { FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] bytes = br.ReadBytes((int)fs.Length); fs.Flush(); fs.Close(); return bytes; } webdate.UploadFile(bytes, uploadPath, FileName) ``` webdate 是我实例化webserver的 有没有本地直接复制文件 然后通过webserver粘贴张服务器上的?
c#通过ftp上传文件返回227,代码如下
``` if(Upload("C:\\Users\\Administrator.AFABW-704091758\\Desktop\\123.jpg", "ip:60021/home/pdsftp")) { this.textBox1.Text = "123"; } else { this.textBox1.Text = "456"; } ``` ``` /// <summary> /// 上传文件 /// </summary> /// <param name="localpath">上传文件的全路径 例@"D:\123.txt"</param> /// <param name="ftppath"></param> /// <returns></returns> public bool Upload(string localpath, string ftppath) { bool bol = false; try { FileInfo fileInf = new FileInfo(localpath); //替换符号 ftppath = ftppath.Replace("\\", "/"); //组合ftp上传文件路径 string uri = "ftp://" + ftppath + "/" + fileInf.Name; // 根据uri创建FtpWebRequest对象 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); // 指定数据传输类型 reqFTP.UseBinary = true; // ftp用户名和密码 reqFTP.Credentials = new NetworkCredential("username", "password"); // 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.KeepAlive = false; // 指定执行什么命令 reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // 上传文件时通知服务器文件的大小 reqFTP.ContentLength = fileInf.Length; reqFTP.UsePassive = false; // 缓冲大小设置为kb int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; // 打开一个文件流(System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的kb contentLen = fs.Read(buff, 0, buffLength); // 流内容没有结束 while (contentLen != 0) { // 把内容从file stream 写入upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); bol = true; } // 关闭两个流 strm.Close(); fs.Close(); } catch (Exception ex) { MessageBox.Show("上传文件失败,失败原因;" + ex.Message); } } catch (Exception ex) { MessageBox.Show("上传文件失败,失败原因;" + ex.Message); } return bol; } ``` 不加这个返回227,按照网上说的加上后返回500 ![图片说明](https://img-ask.csdn.net/upload/201912/09/1575885567_162180.png)
C#上传到ftp文件加密问题
上传功能:private void Upload(string filename) //上传功能 { FileInfo fileInf = new FileInfo(filename); string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name; //uri登录方式 FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name)); reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); reqFTP.KeepAlive = false; reqFTP.Method = WebRequestMethods.Ftp.UploadFile; reqFTP.UseBinary = true; reqFTP.ContentLength = fileInf.Length; // 缓冲区大小设置成2kb int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; //打开一个文件流来读入上传的文件 FileStream fs = fileInf.OpenRead(); try { // 把要上传的文件写入流 Stream strm=reqFTP.GetRequestStream(); //从文件流中读取数据,一次读2kb大小的数据 contentLen = fs.Read(buff, 0, buffLength); // Till Stream content ends while (contentLen != 0) { //把文件的内容从文件流写到FTP上传流中 strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); } //关闭文件流和请求流 strm.Close(); fs.Close(); } catch(Exception ex) { MessageBox.Show(ex.Message, "上传出错"); } } 加密功能: public static String Encrypt(String Key, String str) { byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0, 8)); byte[] bIV = IV; byte[] bStr = Encoding.UTF8.GetBytes(str); try { DESCryptoServiceProvider desc = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write); cStream.Write(bStr, 0, bStr.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return string.Empty; } } 我调用加密函数显示cannot 'string' to 'System.IO.Stream',求大神指点
c#bootstrap上传文件服务器打不开报错,读取二进制流的问题待解决
## html ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Krajee JQuery Plugins - &copy; Kartik</title> <link href="bootstrap.min.css" rel="stylesheet" /> <link href="fileinput.css" media="all" rel="stylesheet" type="text/css" /> <script src="Jquery.min.js"></script> <script src="fileinput.js" type="text/javascript"></script> <script src="bootstrap.min.js" type="text/javascript"></script> <script src="zh.js"></script> </head> <body> <form> <div> <div class="modal-header"> <h4 class="modal-title" id="modalShow">[请选择xml/docx]文件</h4> </div> <div class="modal-body"> <input type="file" name="model_file" id="model_file" multiple class="file-loading" /> </div> </div> </form> <script type="text/javascript"> $(function () { var control = $("#model_file"); var uploadrul = "/bootstrap-fileinput-master/examples/UploadFile.ashx"; var upObj = { language: 'zh', //设置语言 uploadUrl: uploadrul, //上传的地址 uploadExtraData: { "savepath": "/bootstrap-fileinput-master/examples/" },//上传至服务器的参数,非常重要 allowedFileExtensions: ['xml', 'docx', 'jpg', 'png', 'gif', 'rar', 'doc', 'txt'],//接收的文件后缀 showUpload: true, //显示批量上传按钮 showCaption: false,//是否显示标题 browseClass: "btn btn-primary", //按钮样式 dropZoneEnabled: true,//是否显示拖拽区域 maxFileSize: 4096,//单位为kb,如果为0表示不限制文件大小 minFileCount: 0, maxFileCount: 10, msgSizeTooLarge: " \"{name}\" 大小为({size} KB) 最大文件大小为 {maxSize} KB.请重新上传!",//文件的实际大小有些许偏差 enctype: 'multipart/form-data', validateInitialCount: true, previewFileIcon: "<i class='glyphicon glyphicon-king'></i>", msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!", allowedPreviewTypes: ['image']//能够预览的文件类型,如果不限制。文件预览时可能很慢 }; $('#modalShow').html("[请选择"+upObj.allowedFileExtensions+"]文件"); control.fileinput(upObj); //导入文件上传成功之后的事件 $("#model_file").on("fileuploaded", function (event, data, previewId, index) { }); //导入文件上传失败之后的事件 $('#model_file').on('fileuploaderror', function (event, data, msg) { var msg= data.response; }); }); </script> </body> </html> ``` ## ashx ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Text; namespace WebApplication1.bootstrap_fileinput_master.examples { /// <summary> /// UploadFile 的摘要说明 /// </summary> public class UploadFile : IHttpHandler { public void ProcessRequest(HttpContext context) { string json = "{\"msg\":\"上传成功!\"}"; try { //读取二进制流为什么 有问题 context.Response.ContentType = "text/plain"; Stream sr = context.Request.InputStream; byte[] bt = new byte[sr.Length]; HttpPostedFile file = context.Request.Files["model_file"]; string savepath = context.Request["savepath"];//获取文件保存的路径 string fileName = file.FileName; sr.Read(bt, 0, bt.Length); savepath = context.Server.MapPath(savepath) + "\\" + fileName; FileStream fs = new FileStream(savepath, FileMode.Create); fs.Write(bt, 0, bt.Length); fs.Close(); sr.Close(); } catch (Exception ex) { //失败时返回的参数必须加 error键 json = "{\"error\":\""+ex.Message+"\"}"; } context.Response.Write(json); context.Response.End(); } public bool IsReusable { get { return false; } } } } ``` ## 读取数据流的时候有问题,读取到上传文件的属性数据了,见下图2 ![读取数据流的时候用问题](https://img-ask.csdn.net/upload/201710/10/1507618593_496298.png) ##上传文件源数据 ![上传文件源数据](https://img-ask.csdn.net/upload/201710/10/1507618626_265907.png) ## 服务器上文件的内容 ![服务器上文件的内容](https://img-ask.csdn.net/upload/201710/10/1507618659_951615.png) **上传图片、word、excel文件后,打开失败。** ## 附件:[上传文件测试工程demo上传文件测试工程demo](https://pan.baidu.com/s/1kVsZXTt "上传文件测试工程demo")
c# 调用webserver上传文件时候 出现的问题
``` 客户端代码 WebReference.WebService1 webserver = new WebReference.WebService1(); string path = txtPath.Text.Trim();//本地路径 byte[] bytes = GetBytesByPath(path);//获取文件byte[] string uploadPath = comdirectory.Text;//上传服务器文件夹路径 webserver.UploadFile(bytes, uploadPath, FileName); ``` webserver 上的 ``` public bool UploadFile(byte[] fs, string path, string fileName) { bool flag = false; try { path = Server.MapPath(path); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //定义并实例化一个内存流,以存放提交上来的字节数组。 MemoryStream m = new MemoryStream(fs); //定义实际文件对象,保存上载的文件。 FileStream f = new FileStream(path + "\\" + fileName, FileMode.Create); //把内内存里的数据写入物理文件 m.WriteTo(f); m.Close(); f.Close(); f = null; m = null; flag = true; } catch (Exception ex) { flag = false; } return flag; } ``` 这里上传大点的文件(3M以上)就会报错 Not Found。和 最大请求长度超过了 如何 解决这个问题呢?
FTP 550的错误 语言用的是c#
Url = "ftp://192.168.0.45//ffiles"; Method = WebRequestMethods.Ftp.UploadFileWithUniqueName;可以正常运行 Method = WebRequestMethods.Ftp.UploadFile; 就报550的错误 用的是BeginGetRequestStream和EndGetRequestStream 语言用的是C#
c#FTP上传断点续传的问题
class Program { static bool uploadFile(string file_name, long offset = 0, string ftp_method = WebRequestMethods.Ftp.UploadFile) { try { FileInfo file_info = new FileInfo(file_name); if (file_info.Exists == false) { return false; } FtpWebRequest upload_request = (FtpWebRequest)FtpWebRequest.Create("url" + file_info.Name); upload_request.Credentials = new NetworkCredential("a", "a"); upload_request.ContentLength = file_info.Length; upload_request.Timeout = 60000; upload_request.Method = ftp_method; upload_request.ContentOffset = offset; Stream request_stream = upload_request.GetRequestStream(); FileStream file_stream = file_info.OpenRead(); offset = copyDataToDest(Path.GetFileName(file_name), file_stream, request_stream, offset); if (offset != 0) { uploadFile(file_name, offset, WebRequestMethods.Ftp.AppendFile); } } catch (Exception ex) { return false; } return true; } static long copyDataToDest(string file_display_name, Stream source, Stream dest, long offset) { try { byte[] buffer = new byte[1024]; source.Position = offset; int current_read_count = 0; while (true) { current_read_count = source.Read(buffer, 0, 1024); if (current_read_count == 0) { offset = 0; break; } dest.Write(buffer, 0, current_read_count); dest.Flush(); offset += current_read_count; Console.WriteLine(offset / 1024 / 1024 + "/" + source.Length / 1024 / 1024 + "MB"); } } catch { } try { source.Close(); dest.Close(); } catch { } return offset; } static void Main(string[] args) { uploadFile("D:\\1.data"); } } 以上是我的上传代码,如果产生断点续传,续传的文件就会出错,请问哪里写错了?
我用winform给webserver发送了一个文件,我想让服务器在接收完文件后给客户端发送一个信息
用c#做一个wimform客户端用webclient.uploadfile给服务器发送一个文件,在服务器接收完之后返回一个信息给客户端,首先我需要知道怎么给服务器发送一段字符串,比如“ok”,在服务器收到OK之后表示文件接收完了,那么会给客户端返回一个信息,比如“over”,然后客户端接收到这个信息。并用messagebox显示出来“over”关键问题就是怎么让服务器给客户端发送信息
C#语言winform用webclient上传图片到python写的服务器上,一直返回404
如题,url地址确认了没有问题,但是一直都是服务器未响应404,非常奇怪 源码如下 WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials; FileStream fs = new FileStream(resultfile, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite); Bitmap bm = new Bitmap(fs); int streamlength = (int)fs.Length; byte[] image = new byte[streamlength]; fs.Read(image, 0, streamlength); string strRequest = "http://guanjia.51xueba.cn:2014/upload"; //string strRequest = "http://" + Login.URL + ":2014/upload/"; wc.UploadFile(strRequest, resultfile); 我后面吧uploadfile换成其他方法,例如Stream postStream = wc.OpenWrite(strRequest,"put"); if (postStream.CanWrite) { postStream.Write(image, 0, image.Length); postStream.Close(); fs.Dispose(); } 也还是不行,向大神请教!
ASP.NET中用UPLOADfile控件上传,服务器上传不上APK
用uploadfile控件做了个简单的上传,本地测试可以上传图片和APK,但是传到服务器 上就上传不了APK, 等了好久都不行的。。可以上传图片的。。请问是怎么问题? 没有报错,点上传按钮了等到网页刷新超时。。。 服务器IIS已经加入了MIME了。。 上传目录也设置了EVERYONE权限了。。。 http://jcb.wd900.com/test.aspx 上面是测试路径 。。大家知道是怎么回事吗?
php 代码 转换成 asp.net (C#)
php 代码转成 asp.net (C#) 1,简单文件上传 <?php $uploadFileName=$_FILES['Filedata']['name']; $uploadFile=$_FILES['Filedata']['tmp_name']; if(is_uploaded_file($uploadFile)) { $pos=strrpos($uploadFileName,'.'); $len=strlen($uploadFileName); $extendType=substr($uploadFileName,$pos,$len); $localFileName=date("Ymdhis").$extendType; $localFile="wbUpload//".$localFileName; if(move_uploaded_file($uploadFile,$localFile)) { } else { echo "upload failed"; } } ?> 2,ppt文件上传并处理 <?php $uploadFileName=$_FILES['Filedata']['name']; $uploadFile=$_FILES['Filedata']['tmp_name']; $pos=strrpos($uploadFileName,'.'); $len=strlen($uploadFileName); $localFormat=substr($uploadFileName,$pos+1,$len); if($localFormat!="php"&&$localFormat!="php3"&&$localFormat!="exe"&&$localFormat!="bat"&&is_uploaded_file($uploadFile)) { $pos=strrpos($uploadFileName,'.'); $len=strlen($uploadFileName); $extendType=substr($uploadFileName,$pos,$len); $localFileName=$_GET['fileName']; $localFile="pptUpload//".$localFileName; if(move_uploaded_file($uploadFile,$localFile)) { $pos=strrpos($localFileName,'.'); $len=strlen($uploadFileName); $folder=substr($localFileName,0,$pos); $create_date=date("Y-m-d h:i:s"); //转换 $ppt = new COM("powerpoint.application") or die("Unable to instantiate PowerPoint"); $ppt->Visible=true; $ppt->Presentations->Open(realpath($localFile)); $pptCount=$ppt->activePresentation->Slides->Count; $ppt->activePresentation->Export(realPath("./pptUpload")."//".$folder,"JPG",640,480); $sql="insert into zl_ppt (name,folder,roomID,totalFrame,create_date) values ('{$uploadFileName}','{$folder}','{$_GET['roomID']}',{$pptCount},'{$create_date}')"; if(!$rs=$db->sql_query($sql)) { echo "insert error"; } $ppt->Quit(); $path2='.\\pptUpload\\'.$folder."\\"; $handle=opendir($path2); while ($file = readdir($handle)) { if(!is_dir($file)) { $len=strlen($file); $newName=substr($file,6,$len); rename($path2.$file,$path2.$newName); } } closedir($handle); } else { echo "upload failed"; } } ?> 转成 asp.net C# 可以实现相同功能的代码
微信小程序上传文件到nginx服务器,php后台接收图片,但是找不到页面
![图片说明](https://img-ask.csdn.net/upload/201903/10/1552206459_319849.png)![图片说明](https://img-ask.csdn.net/upload/201903/10/1552206470_243993.png) 微信小程序上传文件到nginx服务器,php后台接收图片,明明可以request到,但是wx.uploadFile却找不到页面,哪位大佬知道什么情况,求告知
C# 异步下载问题
public string IPAdress = "xx.xx.xx.xx"; public string ftpUser = "xxx"; public string ftpPassWord = "xxxxxxxx"; public string LocalAdress = "D://"; public string FileName = "xx.txt"; private void Upload() { Uri uri = new Uri("ftp://" + IPAdress + "/" + FileName); //定义FtpWebRequest,并设置相关属性 FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uri); uploadRequest.Method = WebRequestMethods.Ftp.UploadFile; uploadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord); //开始以异步方式打开请求的内容流以便写入 uploadRequest.BeginGetRequestStream(new AsyncCallback(EndGetStreamCallback), uploadRequest); } private void EndGetStreamCallback(IAsyncResult ar) { //用户定义对象,其中包含该操作的相关信息,在这里得到FtpWebRequest FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState; //结束由BeginGetRequestStream启动的挂起的异步操作 //必须调用EndGetRequestStream方法来完成异步操作 //通常EndGetRequestStream由callback所引用的方法调用 Stream requestStream = uploadRequest.EndGetRequestStream(ar); FileStream fileStream = File.Open(@""+LocalAdress + FileName, FileMode.Open); byte[] buffer = new byte[2048]; int bytesRead; float size; while (true) { bytesRead = fileStream.Read(buffer, 0, buffer.Length); startbye += bytesRead; if (bytesRead == 0) break; Debug.Log(startbye); size = fileStream.Length; //本地的文件流数据写到请求流 requestStream.Write(buffer, 0, bytesRead); } requestStream.Close(); fileStream.Close(); //开始以异步方式向FTP服务器发送请求并从FTP服务器接收响应 uploadRequest.BeginGetResponse(new AsyncCallback(EndGetResponseCallback), uploadRequest); } private void EndGetResponseCallback(IAsyncResult ar) { FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState; //结束由BeginGetResponse启动的挂起的异步操作 FtpWebResponse uploadResponse = (FtpWebResponse)uploadRequest.EndGetResponse(ar); Debug.Log(uploadResponse.StatusDescription); Debug.Log("Upload complete"); } 求教大神!!!!!如何把这段异步上传修改成异步下载!!!
UPLOADFILE和UPLOADFILES有区别
求PB的WEBFORM中的UPLOADFILE语法, 百度到: #if defined PBWEBFORM then UploadFiles("c:\upload",parent.backcolor,1,false,"上传图片",".jpg;.txt","myuploadfiles_callback",parent) #end if 名称多了一个S,能上传到WEB服务器,但不能获得文件名
maven项目 文件上传到服务器端解析为空
使用SSM框架开发一个maven项目,在实现一个文件上传的功能时,发现前端传到后端Controller类进行解析的时候,request里面读出来的文件流为空——也就是这个文件没正确传到后端。 百思不得其解,求了解的朋友能够帮忙看一下。 下面是我的前端上传代码和后端解析代码。 ``` <!-- 文件上传测试 --> <div class="panel-body"> <form method="POST" class="form-horizontal" action="exam/uploadQuestions.html" enctype="multipart/form-data"> 选择一个测试文件:<input type="file" name="uploadFile"> <input type="submit" name="uploadSubmit" value="上传"> </form> </div> ``` Controller类方法。 ``` /** * 上传考试题目,返回包含了考试题目的main界面 * @param request * @param response * @return * @throws IOException */ @RequestMapping(value="/uploadQuestions") public ModelAndView uploadQuestions(HttpServletRequest request, HttpServletResponse response) throws IOException { ModelAndView view = new ModelAndView("root/message"); System.out.println("开始上传文件至服务器"); DiskFileUpload diskFileUpload = new DiskFileUpload();//这个已经被废弃了,之后改成菜鸟教程的示例中的做法‘ try { List<FileItem> list = diskFileUpload.parseRequest(request);//解析表单中每一个字段的数据, //包装成独立的FileItem对象并且以List方式返回 System.out.println("准备遍历所有的FileItem...下面是表单field的name"); for(FileItem i:list) { System.out.println(i.getFieldName()); } //下面处理所有的FileItem for(FileItem i:list) { if(i.isFormField()) { System.out.println("这是普通表单字段:"+i.getFieldName()+";"+i.getName()); }else { System.out.println("这是文件表单字段:"+i.getFieldName()+";"+i.getName()+"; 准备进行保存"); //File remoteFile = new File(new String(i.getName().getBytes(),"UTF-8"));//获得要上传的文件的引用 File remoteFile = new File(i.getName());//不使用转换编码格式的话就可以传递文件名为中文的文件了 System.out.println("客户端文件位置:"+remoteFile.getAbsolutePath()); System.out.println("path:"+remoteFile.getPath()+"; name:"+remoteFile.getName()); //下面指定要把上面的remoteFile保存为? File saveFile = new File(new String(remoteFile.getName())); saveFile.createNewFile(); //下面把remoteFile的内容输出到saveFile InputStream ins = i.getInputStream();//获得这个fileItem的输入流 OutputStream ous = new FileOutputStream(saveFile);//获得saveFile的输出流 byte[] buffer = new byte[1024]; int len=0; while( (len=ins.read(buffer)) > -1) { ous.write(buffer, 0, len); System.out.println("文件已经保存到:"+saveFile.getAbsolutePath()); } ous.close(); ins.close(); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } return view; } ```
WebClient UploadFile方法求教
public static void upLoad(string url, string path) { using (WebClient myWebClient = new WebClient()) { myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); byte[] responseArray = myWebClient.UploadFile(url, "POST", path); string msg = Encoding.GetEncoding("UTF-8").GetString(responseArray); if (msg.Contains("成功")) { Console.WriteLine("ok"); } } } 上传MP4文件 大小都在1m以内 有的电脑可以上传成功 而有的电脑却直接报错 实在是想不明白 求指点!
利用wx.uploadFile上传图片,名字乱码
利用wx.uploadFile上传图片到基于spring-boot的服务器程序,服务器上接收到的图片的名字是乱码 ![图片说明](https://img-ask.csdn.net/upload/201905/20/1558321585_900626.png)
JSCH上传文件到linux服务器打开远程目录报空指针异常
最近的项目要用jsch把本地文件上传到服务器,但是出现问题: ``` public static void main(String[] args) { try { upload("/home/informix", "C:\\Users\\Administrator\\Desktop\\upload.jsp", getSession()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSchException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SftpException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获得指定用户session public static Session getSession() throws JSchException { JSch jsch = new JSch();// 创建JSch对象 Session session = jsch.getSession("informix", "192.168.226.166", 22); session.setPassword("ffcsffcs"); Properties config = new Properties(); // 设置 SSH 连接时不进行公钥确认 config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); return session; } //上传单个文件 public static void upload(String remotePath, String uploadFile, Session session) throws JSchException, FileNotFoundException, SftpException { ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.cd(remotePath); File file = new File(uploadFile); channelSftp.put(new FileInputStream(file), file.getName()); //channelSftp.put(new FileInputStream(file), remotePath, ChannelSftp.OVERWRITE); System.out.println("Upload Success!"); } ``` 异常: 4: at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:285) at cn.ffcs.util.JSchUtils.upload(JSchUtils.java:121) at cn.ffcs.util.JSchUtils.main(JSchUtils.java:29) Caused by: java.lang.NullPointerException at com.jcraft.jsch.Packet.reset(Packet.java:43) at com.jcraft.jsch.ChannelSftp.sendPacketPath(ChannelSftp.java:2025) at com.jcraft.jsch.ChannelSftp.sendREALPATH(ChannelSftp.java:1954) at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:1807) at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:268) ... 2 more 求大神指点
java FTP上传文件,成功上传,但是文件为空????
我再linux上面装了一个ftp,准备用程序上传文件到ftp 文件服务器上面, 上传是成功了,但是上传后的文件为空??我调试了发现storeFile这个方法一直返回false ![图片说明](https://img-ask.csdn.net/upload/201712/22/1513905346_255534.png) 但不知道怎么回事,求指教。。。 ``` /** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录 * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String host, int port, String username, String password, String basePath, String filePath, String filename, InputStream input) { boolean result = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(host, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } //切换到上传目录 if (!ftp.changeWorkingDirectory(basePath+filePath)) { //如果目录不存在创建目录 String[] dirs = filePath.split("/"); String tempPath = basePath; for (String dir : dirs) { if (null == dir || "".equals(dir)) continue; tempPath += "/" + dir; if (!ftp.changeWorkingDirectory(tempPath)) { if (!ftp.makeDirectory(tempPath)) { return result; } else { ftp.changeWorkingDirectory(tempPath); } } } } //设置上传文件的类型为二进制类型 ftp.setFileType(FTP.BINARY_FILE_TYPE); //上传文件 if (!ftp.storeFile(new String(filename.getBytes("GBK"),"iso-8859-1"), input)) { return result; } input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result; } public static void main(String[] args) throws IOException { File file2=new File("D:\\Workspaces\\training\\web\\src\\main\\webapp\\modile\\Mission evaluation.docx"); FileInputStream input=new FileInputStream(file2); uploadFile("137.200.48.72", 21, "root", "123", "/home/files", "/Test/poc", "test.doc", input); input.close(); System.out.println(1); } ```
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问