當前位置:首頁 » 文件傳輸 » 七牛文件校驗重復上傳js
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

七牛文件校驗重復上傳js

發布時間: 2022-05-25 04:27:50

① js上傳音頻到七牛雲,當文件名稱相同時,會發生沖突,如何刪除或直接覆蓋掉已上傳的同名文件

正常操作是自定義文件名,比如時間戳。就不會發生沖突了
請採納

② 七牛 node.js 上傳 需要導入什麼js

方法是用來創建一組測試的,並且可以給這一組測試一個描述。
一個測試就用一個it方法。it方法的第一個參數是一個描述。第二個參數是一個包含一個或者多個assertion的方法。

③ 七牛使用JavaScript上傳文件,沒有設置Key,為什麼沒有重命名為hash

在js代碼中也沒有設置key
Qiniu.uploader({
runtimes: 'html5,flash,html4', //上傳模式,依次退化
browse_button: btn_id, //上傳選擇的點選按鈕,**必需**
uptoken : data.token,
domain: data.domain, //bucket 域名,下載資源時用到,**必需**
flash_swf_url: '../plugins/plupload/Moxie.swf', //引入flash,相對路徑
max_retries: 3, //上傳失敗最大重試次數
dragdrop: false, //開啟可拖曳上傳
chunk_size: '200kb', //分塊上傳時,每片的體積
auto_start: true,
multi_selection:false,
filters : {
max_file_size : '200kb',
mime_types: [
{title : "Image files", extensions : "jpg,png"}
]
},
init: { 'FilesAdded': function(up, file) { // 每個文件上傳前,處理相關的事情
if(size>1){ if($(".img-area").length == size){
$.each(up.files, function (i, file) {
up.removeFile(file);
});
layer.alert('最多隻允許上傳'+size+'張圖片!', {
closeBtn: false
});
}
}
}, 'FileUploaded': function(up, file, info) {
$.each(up.files, function (i, file) {
up.removeFile(file);
});
}, 'Error': function(up, err, errTip) {
}
}
});

④ 可以把js和css文件上傳到七牛嗎

當然可以,任意類型的文件都可以上傳

⑤ php表單上傳圖片到七牛雲存儲並返回地址……求具體流程~有代碼更好

有的,我最近研究了一下,寫了一篇記錄,如下

原文地址:http://cuiqingcai.com/?p=157

網上關於七牛雲存儲的教程除了官網上的API文檔,其他的資料太少了。研究了下API之後,現在已經能實現圖片的上傳和下載及上傳之後的重定向。

首先本篇文章實現的功能如下:

1.利用表單上傳功能,用戶可以點擊選擇文件按鈕,選擇本地的一個文件,同時設定上傳的圖片的名稱,點擊上傳按鈕可以上傳並存儲到七牛雲存儲。

2.在點擊上傳時會檢測文件的後綴名,限制為jpg和png格式存儲。

3.上傳成功後跳轉到自己設定的一個URL,並傳迴文件信息,如文件名。而不是顯示七牛白花花的json顯示頁面。

好啦,那我們開始吧,首先我們要有一個七牛雲存儲賬號,如果沒有的就自己去申請吧。

七牛雲存儲傳送門:http://www.qiniu.com/

一.SDK下載

https://github.com/qiniu/php-sdk/tags

戳這個網址下載一下SDK吧,裡面封裝了文件上傳下載等等的方法,我們引入之後可以直接調用。

SDK之中有一個qiniu的文件夾,這是所有的SDK實貨,這個是最重要的。我們首先要把這個文件夾及裡面的文件放到項目文件夾中,比如我放到這里。

大家可以看到有一個qiniu文件夾。好啦,資源支持就是這樣。接下來我們要實現代碼咯。

二.文件的上傳。

1.首先把你七牛雲存儲的密鑰照出來,點擊賬號設置可以看到有一個AccessKey和SecretKey,留著備用。

2.上傳憑證生成。

在這里我們首先要引入rs.php文件,自己找一對應路徑,代碼如下:

require_once(dirname(__FILE__)."/../../qiniu/rs.php");

dirname()是指的絕對路徑,有時相對路徑會出現問題,建議在前面加上dirname方法獲取絕對路徑。

require_once是引入文件,表示該文件只引入一次。

然後,傳入你的AccessKey和SecretKey

代碼如下:

$accessKey='';//換成你自己的密鑰
$secretKey='';//換成你自己的密鑰


Qiniu_SetKeys($accessKey, $secretKey);

然後建一個上傳策略對象,將你的bucket傳入,bucket 就是你的空間名。

$bucket = 'designpartners';
$putPolicy = new Qiniu_RS_PutPolicy($bucket);

然後調用此方法來生成上傳憑證。

$upToken = $putPolicy->Token(null);

接下來就寫一個html表單

<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>

action就填寫up.qiniu.com,表單提供了一個輸入框key,用來輸入你想保存的圖片名稱,上傳到七牛之後就是這個名字。

然後一個文件選擇,一個提交按鈕。運行結果如下:

輸入key值和選擇照片即可實現照片的上傳。哈哈哈有沒有很簡單。

三、文件下載

原理和文件上傳功能相仿。

引入文件

require_once(dirname(__FILE__)."/../../qiniu/rs.php");

聲明你的七牛雲存儲域名和兩個密鑰以及向下載的文件名稱

$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';

注意:1.key值即為文件名,不要加後綴

2.domain即為bucket加上qiniudn.com,例子中的designpartners就是我在上傳圖片時用的bucket名。

3.accessKey和secretKey換成你自己的,直接用我的不行的..因為我修改了.

Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo$privateUrl." ";

傳入這四個值即可生成一樣url,直接訪問url即可實現圖片的下載。

在引入圖片時直接

<img src = "<?php echo $privateUrl; ?>"/>

即可引入圖片咯,很簡單的吧。

四、303重定向

在上面的方法中,我們上傳圖片成功後跳轉到up.qiniu.com下,會顯示白白的網頁,顯示一個json字元串,但是在實際網站開發中我們肯定 不能讓用戶看到這種網頁,所以我們用到了303跳轉。SDK中也為我們封裝了這個方法。使用其實非常簡單。在上傳文件的代碼中添加兩行代碼即可

$putPolicy=newQiniu_RS_PutPolicy($bucket);
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';

注意:1.ReturnUrl和ReturnBody必須指定,並且首字母要大寫,很多人都小寫開頭,這樣會跳轉不成功。

2.ReturnUrl必須是一個公網可以訪問的網址,在本地測試是不可能通過的。比如你寫成localhost,七牛伺服器是定位不到的。
3.這個ReturnUrl的鏈接後會跟著一個?upload_ret=XXX,可以用get方法獲取這個upload_ret。upload_ret的內容是base64安全編碼的json形式的key值。

值的解析:比如我上傳的文件名是555

upload/receiveInfo?upload_ret=eyJrZXkiOiAiNTU1In0=

網址後綴如上所示,把那個upload_ret復制下來,用base64解碼可以出現如下結果:

{"key": "555"}

所以,我們要獲取555這個值的代碼如下,即解析代碼如下:

$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;

好啦,獲取到這個key值之後,你可以選擇存到資料庫或者進行其他的操作咯。

五、上傳前文件類型的驗證

我們可以用js來驗證文件的後綴名,

在form的屬性里加上

onsubmit="return isValidateFile('file');"

加上一個js方法

<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>

即可驗證它的類型是否合法。

附:CI代碼實現:

獲取Uptoken:

functiongetUptoken(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
//遠程存儲空間名稱
$bucket='designpartners';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$putPolicy=newQiniu_RS_PutPolicy($bucket);
echosite_url();
$putPolicy->ReturnUrl=site_url()."/upload/receiveInfo";
$putPolicy->ReturnBody='{"key":$(key)}';
$upToken=$putPolicy->Token(null);
return$upToken;
}

文件上傳:

publicfunctionuploadPic(){
$upToken=$this->getUptoken();
$data['upToken']=$upToken;
$this->load->view('upload',$data);
}

303重定向解析:

publicfunctionreceiveInfo(){
$upload_ret=$_GET['upload_ret'];
$json_ret=base64_decode($upload_ret);
$result=json_decode($json_ret);
echo"key".$result->key;
}

文件下載:

publicfunctiondownloadPic(){
require_once(dirname(__FILE__)."/../../qiniu/rs.php");
$key='00000';
$domain='designpartners.qiniudn.com';
$accessKey='';
$secretKey='';
Qiniu_SetKeys($accessKey,$secretKey);
$baseUrl=Qiniu_RS_MakeBaseUrl($domain,$key);
$getPolicy=newQiniu_RS_GetPolicy();
$privateUrl=$getPolicy->MakeRequest($baseUrl,null);
echo"====>getPolicyresult: ";
echo$privateUrl." ";
}

表單:

<script>
functionisValidateFile(obj){
varextend=document.form.file.value.substring(document.form.file.value.lastIndexOf(".")+1);
if(extend==""){
alert("請選擇頭像");
returnfalse;
}
else{
if(!(extend=="jpg"||extend=="png")){
alert("請上傳後綴名為jpg或png的文件!");
returnfalse;
}
}
returntrue;
}
</script>
<formmethod="post"action="http://up.qiniu.com"name="form"enctype="multipart/form-data"onsubmit="returnisValidateFile('file');">
<ul>
<inputtype="hidden"id="token"name="token"value=<?phpecho$upToken?>>
<li>
<labelfor="key">key:</label>
<inputname="key"value="">
</li>
<li>
<labelfor="bucket">照片:</label>
<inputname="file"type="file"/>
</li>
<li>
<inputtype="submit"value="提交">
</li>
</ul>
</form>

⑥ 七牛存儲,上傳失敗的文件在上傳新文件的時候會一並加入隊列,怎麼可以清空隊列,限制上傳文件個數呢

找到下載的地址 把它強制刪除

⑦ 用的是七牛雲,當出現多個js載入慢的問題要怎麼解決

建議你觀察下頁面內資源的載入時間,同時在頁面中打開多個js文件主要耗時為TTFB,主要耗時為「等待某個js載入渲染完成」+「等待dns解析時間」+「瀏覽器的pending策略」等。你在頁面內同步載入了多個js資源,所以下載速度的不可控是正常的。
因為JS在執行的時候會影響到頁面的DOM和樣式等情況。瀏覽器在解析渲染HTML的時候,如果解析到需要下載文件的script標簽,那麼會停止解析接下來的HTML,然後下載外鏈JS文件並執行。減少 JavaScript 對性能的影響有以下幾種方法:1、將所有的

⑧ js 上傳文件到伺服器時 有重名怎麼解決

就是相同用戶上傳,都有可能會重復,假設一個用戶在兩台機子上被登錄了,又剛好上傳了同一每次的圖片,就會出現覆蓋的現象了,最好就是,上傳的時候,把文件重新命名了,一般我的命名為:用戶ID+時間(長整型的)+隨機數兩位+"_"+文件名.***;

⑨ 七牛雲js上傳 為什麼沒有後綴

上傳文件的控制項 就可以顯示文件名的,不過顯示的是帶後綴的,你是想顯示不帶後綴的是嗎
那就用js 取到那個dom節點 然後把你去掉後綴的文件名 追加進去

⑩ JavaScript 重復選擇相同的文件上傳不會觸發onchang事件,怎麼解決

你好,這個問題其實很簡單,只需在第二次選擇之前改變(清空)現在文件上傳控制項的值就行了。

舉個栗子:

(function(){
varfi=document.getElementById('J_FileUpload');
fi.onchange=function(){
console.log(this.value);
this.value='';
}
})();

當然,為了保險起見,增加if判斷,當input的value不為空的時候再執行其他邏輯。

希望能解決你的問題,如有疑問可追問!