java+express+multiparty上传文件到服务器测试

28 篇文章 0 订阅

server:

app.get('/',function(req, res) {
        res.send("<form method='post', action='/file/uploading', enctype='multipart/form-data'><input name='inputFile', type='file', multiple='mutiple'><input name='btnUp', type='submit',value='上传'></form>");
});

app.post('/file/uploading', function(req, res, next){
   var form = new multiparty.Form({uploadDir: currPath+'public/'});
   form.parse(req, function(err, fields, files) {
     var filesTmp = JSON.stringify(files,null,2);
 
     if(err){
       console.log('parse error: ' + err);
     } else {
       console.log('parse files: ' + filesTmp);
       var inputFile = files.inputFile[0];
       var uploadedPath = inputFile.path;
       var dstPath = currPath+'public/' + inputFile.originalFilename;
       //重命名为真实文件名
       fs.rename(uploadedPath, dstPath, function(err) {
         if(err){
           console.log('rename error: ' + err);
         } else {
           console.log('rename ok');
         }
       });
     }
 
     res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
     res.write('received upload:\n\n');
     res.end(util.inspect({fields: fields, files: filesTmp}));
  });
 });
java:

public class UploadFileTest {   
  public void start() throws Exception {  

      String serverUrl = "http://xxxxxxxx:xxx/file/uploading";//上传地址  

      ArrayList<FormFieldKeyValuePair> ffkvp = new ArrayList<FormFieldKeyValuePair>();   
      ffkvp.add(new FormFieldKeyValuePair("type", "txt"));  	
      
      ArrayList<UploadFileItem> ufi = new ArrayList<UploadFileItem>();  
      ufi.add(new UploadFileItem("inputFile", "D:\\123.txt"));  
      uploadLog hpe = new uploadLog();  
      String response = hpe.sendHttpPostRequest(serverUrl, ffkvp, ufi);  
      System.out.println("Responsefrom server is: " + response);  
        
  }
}  

class uploadLog {
	private static final String BOUNDARY = "----------HV2ymHFg03ehbqgZCaKO6jyH";  
	
	public String sendHttpPostRequest(String serverUrl,  
      ArrayList<FormFieldKeyValuePair> generalFormFields,  
      ArrayList<UploadFileItem> filesToBeUploaded) throws Exception {  

  URL url = new URL(serverUrl);  
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
  // 发送POST请求必须设置如下两行  
  connection.setDoOutput(true);  
  connection.setDoInput(true);  
  connection.setUseCaches(false);  
  connection.setRequestMethod("POST");  
  connection.setRequestProperty("Connection", "Keep-Alive");  
  connection.setRequestProperty("Charset", "UTF-8");  
  connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);  
 
  StringBuffer contentBody = new StringBuffer("--" + BOUNDARY);  
  String endBoundary = "\r\n--" + BOUNDARY + "--\r\n";  
  OutputStream out = connection.getOutputStream();  

  for (FormFieldKeyValuePair ffkvp : generalFormFields)  {  
      contentBody.append("\r\n")  
      .append("Content-Disposition: form-data; name=\"")  
      .append(ffkvp.getKey() + "\"")  
      .append("\r\n")  
      .append("\r\n")  
      .append(ffkvp.getValue())  
      .append("\r\n")  
      .append("--")  
      .append(BOUNDARY);  
  }  

  String boundaryMessage1 = contentBody.toString();  
  out.write(boundaryMessage1.getBytes("utf-8"));  

  for (UploadFileItem ufi : filesToBeUploaded)  {  
      contentBody = new StringBuffer();  
      contentBody.append("\r\n")  
      .append("Content-Disposition:form-data; name=\"")  
      .append(ufi.getFormFieldName() + "\"; ") // form中field的名称  
              .append("filename=\"")  
              .append(ufi.getFileName() + "\"") // 上传文件的文件名,包括目录  
              .append("\r\n")  
              .append("Content-Type:text/plain")  
              .append("\r\n\r\n");  
      String boundaryMessage2 = contentBody.toString();  
      out.write(boundaryMessage2.getBytes("utf-8"));   
      File file = new File(ufi.getFileName());  
      DataInputStream dis = new DataInputStream(new FileInputStream(file));  
      int bytes = 0;  
      byte[] bufferOut = new byte[(int) file.length()];  
      bytes = dis.read(bufferOut);  
      out.write(bufferOut, 0, bytes);  
      dis.close();  
  }  
  out.write(endBoundary.getBytes("utf-8"));  
  out.flush();  
  out.close();    
  String strLine = "";  
  String strResponse = "";  
  InputStream in = connection.getInputStream();  
  BufferedReader reader = new BufferedReader(new InputStreamReader(in));  
  while ((strLine = reader.readLine()) != null)  {  
      strResponse += strLine + "\n";  
  }  
  return strResponse;  
}   
}
class FormFieldKeyValuePair {  
  private static final long serialVersionUID = 1L;  
  //The form field used for receivinguser's input,  
  // such as "username" in "<input type="text" name="username"/>"  
  private String key; 
  //The value entered by user in thecorresponding form field,  
  // such as "Patrick" the abovementioned formfield "username"  
  private String value;  
  public FormFieldKeyValuePair(String key, String value)  {  
      this.key = key;  
      this.value = value;  
  }  
  public String getKey()  {  
      return key;  
  }  
  public void setKey(String key) {  
      this.key = key;  
  }  
  public String getValue()  {  
      return value;  
  }  
  public void setValue(String value)  {  
      this.value = value;  
  }  
}  

class UploadFileItem implements Serializable{  
  private static final long serialVersionUID = 1L; 
  //The form field name in a form used foruploading a file,  
  // such as "upload1" in "<input type="file" name="upload1"/>" 
  private String formFieldName;  
  //File name to be uploaded, thefileName contains path,  
  // such as "E:\\some_file.jpg"  
  private String fileName;  
  public UploadFileItem(String formFieldName, String fileName)  {  
      this.formFieldName = formFieldName;  
      this.fileName = fileName;  
  }  
  public String getFormFieldName()  {  
      return formFieldName;  
  }  
  public void setFormFieldName(String formFieldName)  {  
      this.formFieldName = formFieldName;  
  }  
  public String getFileName()  {  
      return fileName;  
  }  
  public void setFileName(String fileName)  {  
      this.fileName = fileName;  
  }  
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值