Blogger baru -baru ini mengerjakan proyek intranet di mana data eksternal dapat diakses secara internal, tetapi secara eksternal tidak dapat mengakses data internal, yang juga menyebabkan file tidak dapat diunggah. Oleh karena itu, blogger mengambil pendekatan yang berbeda dan membuat folder di server lokal khusus untuk menyimpan data yang diunggah.
Lingkungan: JDK, Tomcat
1. Unggah file di meja depan (unggah jax)
<input type = "file" name = "Annexurl" id = "Annexurl" Multiple = "Multiple"/>
Where Multiple = "Multiple" diatur untuk mengunggah beberapa file
function uploadFile () {var file = document.geteLementById ("annexurl"). file; if (file.length! = 0) {var formdata = new formData (); untuk (var i = 0; i <file.length; i ++) {var file = file [i]; formdata.append (file.name, file); } $ .Ajax ({url: 'CDC/Public/SaveFiles', Type: 'Post', Cache: False, Data: FormData, // Parameter ini unik untuk jQuery dan tidak diserialisasi, karena kita tidak dapat ditetapkan dalam format JSON, tetapi kita perlu lulus dari file ProcessData: FALSE, // CATATAN BAHWA KAMU APA PERSYARATAN DI SINI, TETAPI PERAKSI, TETAPI PALING TERKENA: contentType: false, success: function (data) {save (data.data); } else {save (); }}} Di sini kita perlu menggunakan objek FormData untuk merangkum objek file. Metode save () digunakan untuk menyimpan jalur file yang dikembalikan setelah mengunggah, dan menyimpannya ke database agar mudah diunduh.
2. Menerima file di latar belakang dan mengunggahnya ke server
// Upload multiple files, return a collection of objects (attachment address, name) @RequestMapping(value = "saveFiles", method = RequestMethod.POST) @ResponseBody public JSONObject saveFiles(HttpServletRequest request, HttpServletResponse response) { JSONObject jsonObject = new JSONObject(); coba {request.setcharacterencoding ("UTF-8"); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } Koleksi <part> bagian = null; coba {bagian = request.getParts (); } catch (ioException e) {e.printstacktrace (); } catch (servletException e) {e.printstacktrace (); } Iterator <art> iterator = parts.iterator (); // kumpulan nama, dikembalikan ke daftar latar depan <string> daftar = new ArrayList <> (); while (iterator.hasnext ()) {bagian bagian = iterator.next (); // Hasilkan nama file nyata yang disimpan aktual (unik) // Saya tidak tahu mengapa, unggahan file harus berisi nama file yang diperoleh, jika tidak sintaks nama file, nama direktori atau tag volume salah. Tidak ada batasan seperti itu pada unggahan gambar // Nama file, simpan database, dan gunakan untuk menampilkan string name = part.getName (); String realname = uuid.randomuuid (). ToString () + nama; list.add (name + "&&" + realname); ///home/tomcat/apache-tomcat-9.0.1/files string realpath = "d:" + file.separator + "apache-tomcat-8.5.15" + file.separator + "file"; // String realpath = "c:" + file.separator + "xhj224" + file.separator + "software" + file.separator + "apache-tomcat-9.0.1" + file.separator + "file"; // String realPath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "file"; File file = file baru (realpath); // Jika direktori tidak ada (! File.isDirectory ()) {// Buat file Direktori Upload File.mkdirs (); } // Jalur nyata ke string penyimpanan file FilePath = realPath + file.separator + realname; coba {part.write (filepath); } catch (ioException e) {e.printstacktrace (); }} jsonobject.put ("data", daftar); return jsonObject; } Koleksi daftar menambahkan string yang disambung dengan nama file dan nama file asli, yang diperlukan nanti. RealName adalah untuk mencegah konflik antara beberapa nama file yang diunggah. RealPath adalah jalur penghematan file. Sistem operasi yang berbeda memiliki jalur yang berbeda. RealPath ditempatkan paling baik di bawah Tomcat untuk memfasilitasi porting proyek.
Di mana file.separator adalah pemisah path, yang secara otomatis dapat mengidentifikasi sistem operasi mana dan menggunakan pemisah jalur yang berbeda (windows adalah '/', linux adalah '/'). Akhirnya kembalikan daftar ke meja depan.
Artikel ini telah dikompilasi menjadi "Ringkasan Teknik Operasi Upload Java", dan semua orang dipersilakan untuk belajar dan membaca.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.