Maison > Questions et réponses > le corps du texte
<form action="example.jsp" enctype="multipart/form-data" method="POST">
<label for="fname">请选择</label>
<input type="file" name="fname"/>
</form>
迷茫2017-04-18 10:31:57
/**
* 上传图片接口,任务详情的插图和评论的插图都用
*
* @param request
* @param taskId
* @param taskDiscussId
* @return
*/
@RequestMapping(value = "tasks/{taskId}/files", method = RequestMethod.POST)
public Results<String> uploadFiles(HttpServletRequest request, @PathVariable Integer taskId,
Integer taskDiscussId) {
Results<String> r = new Results<String>();
r.setCode(StatusCode.OK);
try {
// 上传图片处理
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
if (!multipartResolver.isMultipart(request)) {
r.setCode(StatusCode.FAIL);
r.setMessage("没有接收到文件,请重新选择!");
return r;
}
// 将请求还原成文件上传请求
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile mf = multipartRequest.getFile("file");
// 验证文件后缀是否正确
if (!FileFormatUtil.checkFileFormat(mf.getOriginalFilename(), FileFormat.IMAGE)) {
HugeServerException.throwException("用户上传头像格式错误", StatusCode.USER_IMG_FOR_ERROR);
}
// 这里是上传文件,返回保存的路径
String savePath = null;
// 前台有传评论ID的话,那就是上传评论的插图(目前只有上传图片,无其他格式文件)
if (taskDiscussId == null) {
savePath = UploadFileUtils.uploadFile(request, mf, ConfigParam.task_attach);
TaskFile file = new TaskFile();
file.setTaskId(taskId);
file.setFileType(FileType.IMAGE.getValue());
file.setFileName(mf.getName());
file.setFilePath(savePath);
taskFileService.insert(file);
}
else {
savePath = UploadFileUtils.uploadFile(request, mf, ConfigParam.task_discuss_attach);
TaskDiscussFile file = new TaskDiscussFile();
file.setTaskDiscussId(taskDiscussId);
file.setFileType(FileType.IMAGE.getValue());
file.setFileName(mf.getName());
file.setFilePath(savePath);
taskDiscussFileService.insert(file);
}
r.setData(savePath);
}
catch (Exception e) {
log.error("File upload failed.", e);
r.setCode(StatusCode.TASK_FILE_UPLOAD_FAIL);
r.setMessage("任务文件上传失败!");
}
return r;
}
public class UploadFileUtils extends BaseFile{
public static String getNewFileName(String suffix){
if(StringUtils.isEmpty(suffix)){
return null;
}
return new Date().getTime()+UNDERLINE+(new Random().nextInt(100000000)+1)+POINT+suffix;
}
public static String uploadFile(HttpServletRequest request,MultipartFile file, String fileSavePath) throws Exception{
if(file == null){
return "";
}
String originalFilename = file.getOriginalFilename();
if(StringUtils.isBlank(originalFilename)){
return "";
}
//boolean isr = FileFormatUtil.checkFileFormat(originalFilename, fileFormat);
/*if(!isr){
throw new HugeFileException("上传文件格式错误,请重试");
}*/
//物理路径
String wlPath = getFullPath(request,fileSavePath);
File f = new File(wlPath);
if(!f.exists()){
f.mkdirs();
}
//获取后缀名
String suffix = FileUtils.getFileSuffix(originalFilename);
//通过后缀名,获取新的一个文件名
String newFileName = getNewFileName(suffix);
wlPath = wlPath+SPRIT+newFileName;
//这个参数是为了保存到数据库中的值
String ljPath = fileSavePath +SPRIT+newFileName;
//保存文件
copy(file.getInputStream(), wlPath);
//file.transferTo(new File(f.getAbsolutePath(),newFileName));
return ljPath;
}
private static void copy(InputStream fis, String newPath) throws Exception{
FileOutputStream fos =null;
try {
fos = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception("保存失败");
}finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception("保存失败");
}
}
}
public static String getFullPath(HttpServletRequest request,String filePath){
return ConfigParam.path_absolute+filePath;
//return request.getSession().getServletContext().getRealPath(fileConfig);
}
}
迷茫2017-04-18 10:31:57
Le problème a été résolu. La méthode de transfert de fichiers .NET utilisée dans l'entreprise consiste à le soumettre via AJAX POST, à ajouter les paramètres pertinents après l'URL et à ajouter le flux binaire du fichier dans la charge utile de la demande
ringa_lee2017-04-18 10:31:57
ASP.NET MVC
[HttpPost]
public ActionResult UploadImage(HttpPostedFileBase image){
image.SaveAs(fileName);
}
ASP.NET Core
[HttpPost]
public IActionResult UploadImage(IFormFile image){
image.Save(fileName);
}